diff --git a/CMakeLists.txt b/CMakeLists.txt
index d9fd041..f589bfe 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -101,28 +101,7 @@ 
 
 
-SET (QT_MT_REQUIRED true)
-SET (QT_MIN_VERSION "4.2.0")
+SET (QT_MIN_VERSION "5.7.1")
-SET( QT_USE_QTSQL TRUE )
-SET( QT_USE_QTXML TRUE )
-FIND_PACKAGE( Qt4 REQUIRED )
-MESSAGE(STATUS Qt4 version: ${QT_VERSION_MAJOR}.${QT_VERSION_MINOR}.${QT_VERSION_PATCH})
-# suggest Qt upgrade
-if (QT_VERSION_MINOR LESS 3)
-    MESSAGE(STATUS "")
-    MESSAGE(STATUS "__ BIG FAT WARNING! _______________________________")
-    MESSAGE(STATUS "Your Qt version seems older than it should be.")
-    MESSAGE(STATUS "Althought will be Sqliteman compilled successfully,")
-    MESSAGE(STATUS "it will be limited in its features.")
-    MESSAGE(STATUS "There are some important bugs in older Qt versions.")
-    MESSAGE(STATUS "Please upgrade to the current Qt version.")
-    MESSAGE(STATUS "___________________________________________________")
-    MESSAGE(STATUS "")
-endif (QT_VERSION_MINOR LESS 3)
-MESSAGE(STATUS Qt4 includes: ${QT_INCLUDES})
-MESSAGE(STATUS Qt4 libs: ${QT_LIBRARY_DIR})
-
-INCLUDE( ${QT_USE_FILE} )
-
+FIND_PACKAGE( Qt5 ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS Sql Widgets )
 
 IF (WANT_INTERNAL_QSCINTILLA)
     MESSAGE(STATUS "QSci: Building with internal copy of QScintilla.")
diff --git a/cmake/modules/FindQScintilla.cmake b/cmake/modules/FindQScintilla.cmake
index c4592d0..92754b4 100644
--- a/cmake/modules/FindQScintilla.cmake
+++ b/cmake/modules/FindQScintilla.cmake
@@ -10,22 +10,19 @@
 #
 # Redistribution and use is allowed according to the terms of the FreeBSD license.
 
-IF(NOT QT4_FOUND)
-    INCLUDE(FindQt4)
-ENDIF(NOT QT4_FOUND)
-
 SET(QSCINTILLA_FOUND FALSE)
 
-IF(QT4_FOUND)
-    FIND_PATH(QSCINTILLA_INCLUDE_DIR qsciglobal.h
-    "${QT_INCLUDE_DIR}/Qsci" /usr/include /usr/include/Qsci
+IF(Qt5_FOUND)
+    FIND_PATH(QSCINTILLA_INCLUDE_DIR qsciglobal.h
+        HINTS ${Qt5Core_INCLUDE_DIRS}
+        PATH_SUFFIXES Qsci
     )
 
-    SET(QSCINTILLA_NAMES ${QSCINTILLA_NAMES} qscintilla2 libqscintilla2)
-    FIND_LIBRARY(QSCINTILLA_LIBRARY
-        NAMES ${QSCINTILLA_NAMES}
-        PATHS ${QT_LIBRARY_DIR}
-    )
+    SET(QSCINTILLA_NAMES ${QSCINTILLA_NAMES} qscintilla2 libqscintilla2 qscintilla2_qt5 libqscintilla2_qt5)
+    FIND_LIBRARY(QSCINTILLA_LIBRARY
+        NAMES ${QSCINTILLA_NAMES}
+        HINTS ${Qt5Core_LIBRARIES}
+    )
 
     IF (QSCINTILLA_LIBRARY AND QSCINTILLA_INCLUDE_DIR)
 
@@ -41,7 +34,7 @@ IF(QT4_FOUND)
         ENDIF (CYGWIN)
 
     ENDIF (QSCINTILLA_LIBRARY AND QSCINTILLA_INCLUDE_DIR)
-ENDIF(QT4_FOUND)
+ENDIF(Qt5_FOUND)
 
 IF (QSCINTILLA_FOUND)
   IF (NOT QScintilla_FIND_QUIETLY)
diff --git a/sqliteman/CMakeLists.txt b/sqliteman/CMakeLists.txt
index c9154a7..13397ee 100644
--- a/sqliteman/CMakeLists.txt
+++ b/sqliteman/CMakeLists.txt
@@ -139,12 +139,12 @@ IF (WANT_RESOURCES)
     )
 ENDIF (WANT_RESOURCES)
 SET (SQLITEMAN_RCS ${SQLITEMAN_RCS} api/api.qrc)
-QT4_ADD_RESOURCES( SQLITEMAN_RC_RCS ${SQLITEMAN_RCS} )
+QT5_ADD_RESOURCES( SQLITEMAN_RC_RCS ${SQLITEMAN_RCS} )
 
 
-QT4_WRAP_UI( SQLITEMAN_UI_HDRS ${SQLITEMAN_UI} )
+QT5_WRAP_UI( SQLITEMAN_UI_HDRS ${SQLITEMAN_UI} )
 
-QT4_WRAP_CPP( SQLITEMAN_MOC_SRC ${SQLITEMAN_MOC} )
+QT5_WRAP_CPP( SQLITEMAN_MOC_SRC ${SQLITEMAN_MOC} )
 
 INCLUDE_DIRECTORIES( ${CMAKE_BINARY_DIR} )
 INCLUDE_DIRECTORIES( ${CMAKE_BINARY_DIR}/sqliteman )
@@ -157,10 +157,13 @@ IF (WANT_INTERNAL_QSCINTILLA)
         ${CMAKE_SOURCE_DIR}/sqliteman/qscintilla2/Qt4/Qsci
     )
 ELSE (WANT_INTERNAL_QSCINTILLA)
-    INCLUDE_DIRECTORIES( ${QSCINTILLA_INCLUDE_DIR} )
+    INCLUDE_DIRECTORIES(
+        ${QSCINTILLA_INCLUDE_DIR}
+        ${Qt5Widgets_INCLUDE_DIRS}
+        ${Qt5Sql_INCLUDE_DIRS}
+    )
 ENDIF (WANT_INTERNAL_QSCINTILLA)
 
-
 IF (MSVC)
     # this is a must to switch off subsystem:console (console window poping up)
     # WinMain wrapper from QT_QTMAIN_LIBRARY is used and liner must be modified
@@ -178,6 +181,6 @@ ADD_EXECUTABLE( ${EXE_NAME} ${WIN32_SUBSYSTEM}
 )
 
-TARGET_LINK_LIBRARIES( ${EXE_NAME} ${QT_LIBRARIES}) # ${POPULATOR_LIB})
+TARGET_LINK_LIBRARIES( ${EXE_NAME} Qt5::Widgets Qt5::Sql )
 
 IF (WIN32)
     # don't use console subsystem
diff --git a/sqliteman/alterviewdialog.h b/sqliteman/alterviewdialog.h
index 31407f9..b014473 100644
--- a/sqliteman/alterviewdialog.h
+++ b/sqliteman/alterviewdialog.h
@@ -8,11 +8,8 @@ for which a new license (GPL+exception) is in place.
 #ifndef ALTERVIEWDIALOG_H
 #define ALTERVIEWDIALOG_H
 
-#include <qwidget.h>
-
 #include "ui_createviewdialog.h"
 
-
 /*! \brief GUI for view altering
 \author Petr Vanek <petr@scribus.info>
 */
@@ -22,10 +19,10 @@ class AlterViewDialog : public QDialog
 
 	public:
 		AlterViewDialog(const QString & name, const QString & schema, QWidget * parent = 0);
-		~AlterViewDialog(){};
+		~AlterViewDialog(){}
 
 		bool update;
-		void setText(const QString & text) { ui.sqlEdit->setText(text); };
+		void setText(const QString & text) { ui.sqlEdit->setText(text); }
 
 	private:
 		Ui::CreateViewDialog ui;
diff --git a/sqliteman/analyzedialog.h b/sqliteman/analyzedialog.h
index 4b871cf..3f4302e 100644
--- a/sqliteman/analyzedialog.h
+++ b/sqliteman/analyzedialog.h
@@ -8,8 +8,6 @@ for which a new license (GPL+exception) is in place.
 #ifndef ANALYZEDIALOG_H
 #define ANALYZEDIALOG_H
 
-#include <qdialog.h>
-
 #include "ui_analyzedialog.h"
 
 
@@ -23,7 +21,7 @@ class AnalyzeDialog : public QDialog
 
 	public:
 		AnalyzeDialog(QWidget * parent = 0);
-		~AnalyzeDialog(){};
+		~AnalyzeDialog(){}
 
 	private:
 		Ui::AnalyzeDialog ui;
diff --git a/sqliteman/constraintsdialog.h b/sqliteman/constraintsdialog.h
index 6ab19c7..61485bb 100644
--- a/sqliteman/constraintsdialog.h
+++ b/sqliteman/constraintsdialog.h
@@ -8,8 +8,6 @@ for which a new license (GPL+exception) is in place.
 #ifndef CONSTRAINTSDIALOG_H
 #define CONSTRAINTSDIALOG_H
 
-#include <qdialog.h>
-
 #include "ui_constraintsdialog.h"
 
 
@@ -23,7 +21,7 @@ class ConstraintsDialog : public QDialog
 
 	public:
 		ConstraintsDialog(const QString & tabName, const QString & schema, QWidget * parent = 0);
-		~ConstraintsDialog(){};
+		~ConstraintsDialog(){}
 
 		bool update;
 
diff --git a/sqliteman/createindexdialog.h b/sqliteman/createindexdialog.h
index 9c75b35..186a46a 100644
--- a/sqliteman/createindexdialog.h
+++ b/sqliteman/createindexdialog.h
@@ -8,8 +8,6 @@ for which a new license (GPL+exception) is in place.
 #ifndef INDEXDIALOG_H
 #define INDEXDIALOG_H
 
-#include <qwidget.h>
-
 #include "ui_createindexdialog.h"
 
 
@@ -27,7 +25,7 @@ class CreateIndexDialog : public QDialog
 		\param parent standard Qt parent
 		*/
 		CreateIndexDialog(const QString & tabName, const QString & schema, QWidget * parent = 0);
-		~CreateIndexDialog(){};
+		~CreateIndexDialog(){}
 
 		bool update;
 
diff --git a/sqliteman/dataexportdialog.cpp b/sqliteman/dataexportdialog.cpp
index 7ad5d03..ee77b25 100644
--- a/sqliteman/dataexportdialog.cpp
+++ b/sqliteman/dataexportdialog.cpp
@@ -223,7 +223,7 @@ bool DataExportDialog::exportHTML()
 	{
 		out << "<tr>";
 		for (int i = 0; i < m_header.size(); ++i)
-			out << "<th>" << m_header.at(i) << "</th>";
+			out << "<th>" << m_header.at(i).toHtmlEscaped() << "</th>";
 		out << "</tr>" << endl();
 	}
 
@@ -234,7 +234,7 @@ bool DataExportDialog::exportHTML()
 		out << "<tr>";
 		QSqlRecord r = m_data->record(i);
 		for (int j = 0; j < m_header.size(); ++j)
-			out << "<td>" << r.value(j).toString() << "</td>";
+			out << "<td>" << r.value(j).toString().toHtmlEscaped() << "</td>";
 		out << "</tr>" << endl();
 	}
 	out << "</table>" << endl() << "</body>" << endl() << "</html>";
@@ -256,7 +256,7 @@ bool DataExportDialog::exportExcelXML()
 	{
 		out << "<ss:Row ss:StyleID=\"1\">" << endl();
 		for (int i = 0; i < m_header.size(); ++i)
-			out << "<ss:Cell><ss:Data ss:Type=\"String\">" << m_header.at(i) << "</ss:Data></ss:Cell>" << endl();
+			out << "<ss:Cell><ss:Data ss:Type=\"String\">" << m_header.at(i).toHtmlEscaped() << "</ss:Data></ss:Cell>" << endl();
 		out << "</ss:Row>" << endl();
 	}
 
@@ -267,7 +267,7 @@ bool DataExportDialog::exportExcelXML()
 		out << "<ss:Row>" << endl();
 		QSqlRecord r = m_data->record(i);
 		for (int j = 0; j < m_header.size(); ++j)
-			out << "<ss:Cell><ss:Data ss:Type=\"String\">" << r.value(j).toString() << "</ss:Data></ss:Cell>" << endl();
+			out << "<ss:Cell><ss:Data ss:Type=\"String\">" << r.value(j).toString().toHtmlEscaped() << "</ss:Data></ss:Cell>" << endl();
 		out << "</ss:Row>" << endl();
 	}
 
diff --git a/sqliteman/populatordialog.cpp b/sqliteman/populatordialog.cpp
index 1e55f63..8e6e246 100644
--- a/sqliteman/populatordialog.cpp
+++ b/sqliteman/populatordialog.cpp
@@ -7,7 +7,7 @@ for which a new license (GPL+exception) is in place.
 #include <QSqlQuery>
 #include <QSqlError>
 #include <QHeaderView>
-#include <math.h>
+#include <QtMath>
 
 #include "populatordialog.h"
 #include "populatorcolumnwidget.h"
--- a/sqliteman/shortcutmodel.cpp
+++ b/sqliteman/shortcutmodel.cpp
@@ -45,7 +45,7 @@ QVariant ShortcutModel::data(const QModelIndex & index, int role) const
 		return QVariant(index.column() == 0 ? m_values.at(index.row()).first : m_values.at(index.row()).second);
 	}
 	if (role == Qt::BackgroundRole && index.column() == 0 && m_values.at(index.row()).first.isEmpty())
-		return QVariant(Qt::red);
+		return QVariant(QColor(Qt::red));
 	return QVariant();
 }
 
diff --git a/sqliteman/sqlmodels.cpp b/sqliteman/sqlmodels.cpp
index 178b2e7..82d1f0c 100644
--- a/sqliteman/sqlmodels.cpp
+++ b/sqliteman/sqlmodels.cpp
@@ -47,7 +47,7 @@ QVariant SqlTableModel::data(const QModelIndex & item, int role) const
 
 	// mark rows prepared for a deletion in this trasnaction
 	if (role == Qt::BackgroundColorRole && m_deleteCache.contains(item.row()))
-		return QVariant(Qt::red);
+		return QVariant(QColor(Qt::red));
 
 	// nulls
 	if (m_useNull && curr.isNull())
diff --git a/sqliteman/sqlparser/tosqlparse.h b/sqliteman/sqlparser/tosqlparse.h
index 3424fa2..678df90 100644
--- a/sqliteman/sqlparser/tosqlparse.h
+++ b/sqliteman/sqlparser/tosqlparse.h
@@ -50,7 +50,6 @@ This file is based on the TOra source code. http://tora.sf.net
 
 #include <list>
 #include <algorithm>
-// #include <qstring.h>
 #include <QString>
 
 // class toConnection;
diff --git a/sqliteman/tabletree.cpp b/sqliteman/tabletree.cpp
index 339e259..f4ab00c 100644
--- a/sqliteman/tabletree.cpp
+++ b/sqliteman/tabletree.cpp
@@ -6,6 +6,8 @@ for which a new license (GPL+exception) is in place.
 */
 #include <QMouseEvent>
 #include <QApplication>
+#include <QDrag>
+#include <QMimeData>
 
 #include "database.h"
 #include "tabletree.h"
diff --git a/sqliteman/vacuumdialog.h b/sqliteman/vacuumdialog.h
index cac27f1..5e25214 100644
--- a/sqliteman/vacuumdialog.h
+++ b/sqliteman/vacuumdialog.h
@@ -8,7 +8,7 @@ for which a new license (GPL+exception) is in place.
 #ifndef VACUUMDIALOG_H
 #define VACUUMDIALOG_H
 
-#include <qdialog.h>
+#include <QDialog>
 
 #include "ui_vacuumdialog.h"
 
diff --git a/sqliteman/sqliteprocess.h b/sqliteman/sqliteprocess.h
index aaa60ca..5bec5b0 100644
--- a/sqliteman/sqliteprocess.h
+++ b/sqliteman/sqliteprocess.h
@@ -8,6 +8,7 @@ for which a new license (GPL+exception) is in place.
 #ifndef SQLITEPROCESS_H
 #define SQLITEPROCESS_H
 
+#include <QObject>
 #include <QStringList>
 
 
